旋转正方形矩阵。
解答1[Java]:
核心思想
旋转的数字旋转之后,几个位置的数字之间是有规律的。
代码
class Solution {
public void rotate(int[][] matrix) {
int r1 = 0;
int c1 = 0;
int r2 = matrix.length - 1;
int c2 = matrix[0].length - 1;
while (r1 < r2) {
rotateEdge(matrix, r1++, c1++, r2--, c2--);
}
}
public static void rotateEdge(int[][] m, int r1, int c1, int r2, int c2) {
int times = c2 - c1;
int tmp = 0;
for (int i = 0; i != times; i++) {
tmp = m[r1][c1 + i];
m[r1][c1 + i] = m[r2 - i][c1];
m[r2 - i][c1] = m[r2][c2 - i];
m[r2][c2 - i] = m[r1 + i][c2];
m[r1 + i][c2] = tmp;
}
}
}